
package es.us.lsi.daw.enums;

import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;

public enum TipoValidacion
	implements Serializable {

	Requerido, Email, Unico, NumericoEntero, NumericoFloat, Hora, Fecha, Comparacion, NumericoDouble;

	public static TipoValidacion stringToTipoValidacion(String valor) {

		if (valor.equals("Requerido"))
			return Requerido;
		if (valor.equals("Email"))
			return Email;
		if (valor.equals("Unico"))
			return Unico;
		if (valor.equals("NumericoEntero"))
			return NumericoEntero;
		if (valor.equals("NumericoFloat"))
			return NumericoFloat;
		if (valor.equals("Hora"))
			return Hora;
		if (valor.equals("Fecha"))
			return Fecha;
		if (valor.equals("Comparacion"))
			return Comparacion;
		if (valor.equals("NumericoDouble"))
			return NumericoDouble;
		return null;
	}

	public static List<TipoValidacion> stringToTipoValidacion(Annotation[] anotaciones) {

		List<TipoValidacion> validaciones = new ArrayList<TipoValidacion>();
		for (Annotation a : anotaciones)
			if (stringToTipoValidacion(a.annotationType().getSimpleName()) != null)
				validaciones.add(stringToTipoValidacion(a.annotationType().getSimpleName()));
		return validaciones;
	}

	@Override
	public String toString() {

		switch (this) {
		case Requerido:
			return "Requerido";
		case Email:
			return "Email";
		case Unico:
			return "Unico";
		case NumericoEntero:
			return "NumericoEntero";
		case NumericoFloat:
			return "NumericoFloat";
		case Hora:
			return "Hora";
		case Fecha:
			return "Fecha";
		case Comparacion:
			return "Comparacion";
		case NumericoDouble:
			return "NumericoDouble";
		}
		return "";
	}

}
